export default {
  state: {
    title: '',
    //组件插槽 传递元素和方法
    rightCon: '',
  }, //跨组件共享的数据包

  reducers: {
    //同步 action，用来修改 state
    changeTitle(state: any, action: any) {
      let title = action.payload ? action.payload : '';
      state.title = title;
      return state;
    },
    updateRightCon(state: any, { payload }) {
      //payload是一个对象
      return {
        ...state,
        rightCon: payload,
      };
    },
    resetHeader(state: any, { payload }) {
      //payload是一个对象
      const { title, rightCon } = payload;
      return {
        rightCon: rightCon,
        title: title,
      };
    },
  },
  effects: {
    //异步 action，用来发送异步请求
  },
};

/**
 * model的使用 model可以放在src/models下面，也可以放在src/pages/xxx/model下面
 * 1.model在组件中的使用 注意：在LayotHeader组件中使用时会报错
 * import {connect} from 'umi'
 * const CompA: React.FC<any> = (props) => {
 *     调用方法
 *     props.dispatch({type:'headerModel/changeTitle',payload:'xxx'})
 *     显示内容
 *     props.headerModel.xxx
 * };
 * export default connect(({headerModel})=>({headerModel}))(CompA)
 *
 * 2.hooks中的使用 注意：在onRouteChange中使用时会报错
 * import { useSelector,useDispatch} from '@umijs/max';
 * const CompA: React.FC<any> = (props) => {
 *     调用方法
 *     const dispatch = useDispatch(); //获取dispatch
 *     dispatch({type:'headerModel/changeTitle',payload:'xxx'})
 *     显示内容
 *     const headerModel = useSelector((state:any) => state.headerModel);
 *     const {title} = headerModel
 * };
 *
 * 3.调用getDvaApp().model(headerModel)  在app.jsx和layoutHeader中使用
 * import { getDvaApp } from '@umijs/runtime';
 * 显示
 * getDvaApp()._store.getState().headerModel.xxx
 * 调用方法
 * getDvaApp()._store.dispatch({
 *   type:'headerModel/xxx',
 *   payload:{
 *     title:name,
 *     rightCon:null
 *   }
 * })
 */
